/**
 * 活动相关接口控制器，提供活动的增删改查等 RESTful API。
 */
package com.example.project.controller.user;

import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.example.project.entity.Activity;
import com.example.project.result.Result;
import com.example.project.service.IActivityService;


@RestController
@RequiredArgsConstructor
@RequestMapping("/api")
public class ActivityController {


    /**
     * 活动业务服务
     */
    @Autowired
    IActivityService activityService;

    /**
     * 新增活动
     * @param activity 活动实体
     * @return 操作结果
     */
    @PostMapping("/admin/activity")
    public Result addActivity(@RequestBody Activity activity){
        return activityService.addActivity(activity);
    }

    /**
     * 删除指定活动
     * @param activityId 活动ID
     * @return 操作结果
     */
    @DeleteMapping("/admin/activity/{activityId}")
    public Result deleteActivity(@PathVariable("activityId") String  activityId){
        return activityService.deleteActivity(activityId);
    }

    /**
     * 获取指定活动详情
     * @param activityId 活动ID
     * @return 活动详情结果
     */
    @GetMapping("/activity/{activityId}")
    public Result getActivity(@PathVariable("activityId") String  activityId){
        return activityService.getActivity(activityId);
    }

    /**
     * 分页获取所有活动列表
     * @param page 页码
     * @param size 每页数量
     * @return 活动列表结果
     */
    @GetMapping("/admin/activity/list")
    public Result listActivity(@RequestParam("page")int page,@RequestParam("size")int size){
        return activityService.listActivity(page,size);
    }

    /**
     * 根据案例分页获取活动列表
     * @param page 页码
     * @param size 每页数量
     * @return 活动列表结果
     */
    @GetMapping("/activity/list/case")
    public Result listActivityByCase(@RequestParam("page")int page,
                                     @RequestParam("size")int size){
        return activityService.listActivityByCase(page,size);
    }


    /**
     * 根据用户名分页获取活动列表
     * @param userName 用户名
     * @param page 页码
     * @param size 每页数量
     * @return 活动列表结果
     */
    @GetMapping("/admin/activity/list/self")
    public Result listActivityByUser(@RequestParam("userName") String userName,
                                     @RequestParam("page")int page,
                                     @RequestParam("size")int size){
        return activityService.listActivityByUser(userName,page,size);
    }



    /**
     * 更新指定活动信息
     * @param activityId 活动ID
     * @param activity 活动实体
     * @return 操作结果
     */
    @PutMapping("/admin/activity/{activityId}")
    public Result updateActivity(@PathVariable("activityId") String activityId,
                                 @RequestBody Activity activity){
        return activityService.updateActivity(activityId,activity);
    }
}
